957bf7acaadabc2bb7f7cf2f8edc7cfc99351bda,modules/siddhi-core/src/main/java/org/wso2/siddhi/core/util/parser/helper/QueryParserHelper.java,QueryParserHelper,reduceStreamAttributes,#MetaStreamEvent#,73

Before Change


     * @param metaStreamEvent MetaStreamEvent
     */
    private static synchronized void reduceStreamAttributes(MetaStreamEvent metaStreamEvent) {
        for (Attribute attribute : metaStreamEvent.getOutputData()) {
            if (metaStreamEvent.getBeforeWindowData().contains(attribute)) {
                metaStreamEvent.getBeforeWindowData().remove(attribute);
            }
            if (metaStreamEvent.getOnAfterWindowData().contains(attribute)) {
                metaStreamEvent.getOnAfterWindowData().remove(attribute);
            }
        }
        for (Attribute attribute : metaStreamEvent.getOnAfterWindowData()) {
            if (metaStreamEvent.getBeforeWindowData().contains(attribute)) {
                metaStreamEvent.getBeforeWindowData().remove(attribute);
            }

After Change


     * @param metaStreamEvent MetaStreamEvent
     */
    private static synchronized void reduceStreamAttributes(MetaStreamEvent metaStreamEvent) {
        Set<Attribute> duplicateFinder = new HashSet<Attribute>();
        for (Iterator<Attribute> iterator = metaStreamEvent.getOutputData().iterator(); iterator.hasNext(); ) {
            Attribute attribute = iterator.next();
            if (attribute != null) {
                if (duplicateFinder.add(attribute)) {
                    if (metaStreamEvent.getBeforeWindowData().contains(attribute)) {
                        metaStreamEvent.getBeforeWindowData().remove(attribute);
                    }
                    if (metaStreamEvent.getOnAfterWindowData().contains(attribute)) {
                        metaStreamEvent.getOnAfterWindowData().remove(attribute);
                    }
                } else {
                    iterator.remove();
                }
            }
        }
        duplicateFinder = new HashSet<Attribute>();
        for (Iterator<Attribute> iterator = metaStreamEvent.getOnAfterWindowData().iterator(); iterator.hasNext(); ) {
            Attribute attribute = iterator.next();
            if (attribute != null) {
                if (duplicateFinder.add(attribute)) {
                    if (metaStreamEvent.getBeforeWindowData().contains(attribute)) {
                        metaStreamEvent.getBeforeWindowData().remove(attribute);
                    }
                } else {
                    iterator.remove();
                }
            }
        }

        for (Iterator<Attribute> iterator = metaStreamEvent.getBeforeWindowData().iterator(); iterator.hasNext(); ) {
            Attribute attribute = iterator.next();
            if (attribute != null) {
                if (!duplicateFinder.add(attribute)) {
                    iterator.remove();
                }
            }
        }